﻿Imports System.Data

Partial Class Interfaz_ModuloAdministracion_popUpTotalesItem
    Inherits System.Web.UI.Page

    Dim Cl As Logica.ModuloAdministracion.ControladorLogica

    Dim arrayPresupuesto As New ArrayList
    Dim SubProyectoPresupuesto As New ArrayList
    Dim dtDatos As New DataTable
    Dim dataset As New DataSet
    Dim dtDatosMat As New DataTable
    Dim datasetMat As New DataSet
    Dim dtDatosInfoPres As New DataTable
    Dim datasetInfoPres As New DataSet

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            If Not Page.IsPostBack Then
                Me.PanelAct.Visible = False
                Me.PanelMat.Visible = False

            End If

            Cl = Logica.ModuloAdministracion.ControladorLogica.getInstance
            Scrip()
            LlenarCampos()
            Me.LoadpagMateriales()
            Me.LoadPagActividades()

            If Not Page.IsPostBack Then
                Dim dataTab As Data.DataTable = Session("Actividad" + Request("pNumFila"))
                If Not dataTab Is Nothing Then
                    Me.GridActividad.DataSource = dataTab
                    Me.GridActividad.DataBind()
                Else
                    Me.GridActividad.DataBind()
                End If

                Dim dataTab2 As Data.DataTable = Session("Material" + Request("pNumFila"))
                If Not dataTab2 Is Nothing Then
                    Me.GridMaterial.DataSource = dataTab2
                    Me.GridMaterial.DataBind()
                Else
                    Me.GridMaterial.DataBind()
                End If
            End If
        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
       

    End Sub

#Region "Funcionalidades"
    Private Sub LoadpagMateriales()
        Try
            If Not Page.IsPostBack Then

                dtDatosMat.Columns.Add(New DataColumn("ID"))
                dtDatosMat.Columns.Add(New DataColumn("ITEM"))
                dtDatosMat.Columns.Add(New DataColumn("CANTIDAD"))
                dtDatosMat.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatosMat.Columns.Add(New DataColumn("VALORKG"))
                dtDatosMat.Columns.Add(New DataColumn("TOTNETO"))

                Me.GridMaterial.DataBind()
                Me.GridMaterial.DataSource = Me.dtDatosMat
                LlenarGridPresuAnteriorMateriales()

            End If
        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
    End Sub

    Private Sub LoadPagActividades()
        Try
            'se guardan datos en secion para el positback de la pagina respecto al los datos del datagridview
            If Not Page.IsPostBack Then

                dtDatos.Columns.Add(New DataColumn("ID"))
                dtDatos.Columns.Add(New DataColumn("ACTIVIDAD"))
                dtDatos.Columns.Add(New DataColumn("CANTHORAS"))
                dtDatos.Columns.Add(New DataColumn("VALORHH"))
                dtDatos.Columns.Add(New DataColumn("FACTORHH"))
                dtDatos.Columns.Add(New DataColumn("DESCRIPCION"))
                dtDatos.Columns.Add(New DataColumn("TOTALNETO"))
                dtDatos.Columns.Add(New DataColumn("PRIOR"))
                Me.GridActividad.DataBind()
                Me.GridActividad.DataSource = Me.dtDatos

                LlenarGridPresuAnteriorActividades()
            End If


        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
    End Sub

    Public Sub LlenarGridPresuAnteriorMateriales()
        Try
            Dim fkPresuSubP As String = Request("pNumFila")
            Dim PresuSubPMate As ArrayList = Cl.obtenerPresupuestoSubproyectoMaterial(fkPresuSubP)

            If PresuSubPMate.Count > 0 Then
                Me.PanelMat.Visible = True
            End If

            Dim j As Integer
            For j = 0 To PresuSubPMate.Count - 1

                Dim drDatos2 As DataRow = dtDatosMat.NewRow
                Dim pspm As presupuestosubproyectomaterial = DirectCast(PresuSubPMate.Item(j), presupuestosubproyectomaterial)

                drDatos2.Item("ID") = pspm.id
                drDatos2.Item("ITEM") = pspm.fkmaterial
                drDatos2.Item("CANTIDAD") = pspm.cantidad
                drDatos2.Item("DESCRIPCION") = pspm.descripcion
                drDatos2.Item("VALORKG") = pspm.valorKg
                drDatos2.Item("TOTNETO") = pspm.neto
                dtDatosMat.Rows.Add(drDatos2)
            Next j
       
            Me.GridMaterial.DataSource = dtDatosMat
            Me.GridMaterial.DataBind()

        Catch ex As Exception
            'Me.LblError.Text = ex.ToString
        End Try
    End Sub

    Public Sub LlenarGridPresuAnteriorActividades()
        Try
            Dim PresuSubPACT As ArrayList
            Dim fkPresuSubP As String = Request("pNumFila")


            PresuSubPACT = Cl.obtenerPresupuestoSubproyectoActividad(fkPresuSubP)

            If PresuSubPACT.Count > 0 Then
                Me.PanelAct.Visible = True
            End If

            Dim j As Integer

            For j = 0 To PresuSubPACT.Count - 1

                Dim drDatos2 As DataRow = dtDatos.NewRow

                Dim pspa As presupuestosubproyectoactividad = DirectCast(PresuSubPACT.Item(j), presupuestosubproyectoactividad)

                drDatos2.Item("ID") = pspa.id
                drDatos2.Item("ACTIVIDAD") = pspa.fkactividad
                drDatos2.Item("CANTHORAS") = pspa.cantidadHora
                drDatos2.Item("VALORHH") = pspa.valorHoraHombre
                drDatos2.Item("FACTORHH") = pspa.factorHH
                drDatos2.Item("DESCRIPCION") = pspa.descripcion
                drDatos2.Item("TOTALNETO") = pspa.neto
                drDatos2.Item("PRIOR") = pspa.prioridadTarea

                dtDatos.Rows.Add(drDatos2)

            Next j

            Me.GridActividad.DataSource = dtDatos
            Me.GridActividad.DataBind()

        Catch ex As Exception
            'Me.LblError.Text = ex.ToString
        End Try
    End Sub

    Private Sub guardarMaterial()
        Try
            If CInt(Me.eliminarFormatoNumero(Me.TxtTotalCobrarMat.Text)) > 0 Then

                Dim arrayPresupuestoSubproyectoMaterial As ArrayList = Cl.obtenerPresupuestoSubproyectoMaterial(Request("pNumFila"))
                Dim i As Integer

                For i = 0 To arrayPresupuestoSubproyectoMaterial.Count - 1
                    Dim material As presupuestosubproyectomaterial = DirectCast(arrayPresupuestoSubproyectoMaterial.Item(i), presupuestosubproyectomaterial)
                    Dim porcentaje As Integer = (material.neto * 100) / CInt(Me.LblTotalMateriales.Text)
                    Dim totalacobrarItem As Integer = CInt(eliminarFormatoNumero(Me.TxtTotalCobrarMat.Text)) * (porcentaje / 100)
                    Cl.ActualizarTotalCobrarPresupuestoSubproyectoMaterial(material.id, totalacobrarItem)
                Next i
                Me.Mensaje("Los datos han sido Ingresados Exitosamente")
            Else
                Me.Mensaje("El numero ingresado no es valido")

            End If
        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
      
    End Sub

    Private Sub guardar()
        Try
            If CInt(Me.eliminarFormatoNumero(Me.TxtTotalCobrarAct.Text)) > 0 Then

                Dim arrayPresupuestoSubproyectoActividades As ArrayList = Cl.obtenerPresupuestoSubproyectoActividad(Request("pNumFila"))
                Dim i As Integer

                For i = 0 To arrayPresupuestoSubproyectoActividades.Count - 1
                    Dim actividad As presupuestosubproyectoactividad = DirectCast(arrayPresupuestoSubproyectoActividades.Item(i), presupuestosubproyectoactividad)
                    Dim porcentaje As Integer = (actividad.neto * 100) / CInt(Me.LblTotalActividades.Text)
                    Dim totalacobrarItem As Integer = CInt(eliminarFormatoNumero(Me.TxtTotalCobrarAct.Text)) * (porcentaje / 100)
                    Cl.ActualizarTotalCobrarPresupuestoSubproyectoActividad(actividad.id, totalacobrarItem)
                Next i
                Me.Mensaje("Los datos han sido Ingresados Exitosamente")
            Else
                Me.Mensaje("El numero ingresado no es valido")

            End If
        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
       
    End Sub

    Private Sub LlenarCampos()
        Try
            SubProyectoPresupuesto = Cl.obtenerSubProyectoId(Request("pNumFila"))
            arrayPresupuesto = Cl.ObtenerPresupuestoCriterio(DirectCast(SubProyectoPresupuesto.Item(0), presupuestosubproyecto).fkPresupuesto)

            Me.LblItem.Text = Request("pNumFila")
            Me.LblPresu.Text = DirectCast(arrayPresupuesto.Item(0), Presupuesto).id


            Me.lblporGastosGrlsMat.Text = DirectCast(arrayPresupuesto.Item(0), Presupuesto).gastosgeneralesporcentaje
            Me.LblporcUtilidadMat.Text = DirectCast(arrayPresupuesto.Item(0), Presupuesto).utilidadporcentaje
            Me.lblUtilidadMateriales.Text = DirectCast(arrayPresupuesto.Item(0), Presupuesto).utilidadmateriales
            Me.LblporDescuentoMat.Text = DirectCast(arrayPresupuesto.Item(0), Presupuesto).descuentoPorcentaje

            Me.lblporGastosGrlsAct.Text = Me.lblporGastosGrlsMat.Text
            Me.LblporcUtilidadAct.Text = Me.LblporcUtilidadMat.Text
            Me.LblporDescuentoAct.Text = Me.LblporDescuentoMat.Text



            Me.LblTotalActividades.Text = CStr(Cl.obtenerTotalActividades(DirectCast(SubProyectoPresupuesto.Item(0), presupuestosubproyecto).id))
            Me.LblTotalMateriales.Text = CStr(Cl.obtenerTotalMateriales(DirectCast(SubProyectoPresupuesto.Item(0), presupuestosubproyecto).id))
            Me.LblCantidadMat.Text = (DirectCast(SubProyectoPresupuesto.Item(0), presupuestosubproyecto).Cantidad)
            Me.LblCantidadActividad.Text = Me.LblCantidadMat.Text


            Me.LblSubTotalmat.Text = CInt(Me.LblCantidadMat.Text) * CInt(Me.LblTotalMateriales.Text)
            Me.LblSubTotalActividad.Text = CInt(Me.LblCantidadActividad.Text) * CInt(Me.LblTotalActividades.Text)

            Me.LblGastosGeneralesMat.Text = CInt(CInt(Me.LblSubTotalmat.Text) * CDbl(Me.lblporGastosGrlsMat.Text / 100))
            Me.LblUtilidadesMat.Text = CInt(CInt(Me.LblSubTotalmat.Text) * CDbl(Me.LblporcUtilidadMat.Text / 100))
            Me.LblUtilidadMaterialesMat.Text = CInt(CInt(Me.LblSubTotalmat.Text) * CDbl(Me.lblUtilidadMateriales.Text / 100))
            Me.LblDescuentoMat.Text = CInt(CInt(Me.LblSubTotalmat.Text) * CDbl(Me.LblporDescuentoMat.Text / 100))

            Me.LblGastosGeneralesAct.Text = CInt(CInt(Me.LblSubTotalActividad.Text) * CDbl(Me.lblporGastosGrlsAct.Text / 100))
            Me.LblUtilidadesAct.Text = CInt(CInt(Me.LblSubTotalActividad.Text) * CDbl(Me.LblporcUtilidadAct.Text / 100))
            Me.LblDescuentoAct.Text = CInt(CInt(Me.LblSubTotalActividad.Text) * CDbl(Me.LblporDescuentoAct.Text / 100))

            Me.LblTotalnetoActivdad.Text = CInt(CInt(Me.LblSubTotalActividad.Text) + CInt(Me.LblGastosGeneralesAct.Text) + CInt(Me.LblUtilidadesAct.Text) - CInt(Me.LblDescuentoAct.Text))
            Me.LblTotalnetoMat.Text = CInt(CInt(Me.LblSubTotalmat.Text) + CInt(Me.LblGastosGeneralesMat.Text) + CInt(Me.LblUtilidadesMat.Text) + CInt(Me.LblUtilidadMaterialesMat.Text) - CInt(Me.LblDescuentoMat.Text))

        Catch ex As Exception
            Me.LblError.Text = ex.ToString
        End Try
    End Sub
#End Region

#Region "Botones"
    Protected Sub BtnGuardarMat_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardarMat.Click
        guardarMaterial()
    End Sub

    Protected Sub BtnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BtnGuardarAct.Click
        guardar()
    End Sub

#End Region

#Region "Script"
    Private Sub Scrip()

        Me.TxtTotalCobrarAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtTotalCobrarAct.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtTotalCobrarAct.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")

        Me.TxtTotalCobrarMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtTotalCobrarMat.Attributes.Add("onkeypress", "javascript:return ValidNum(event);")
        Me.TxtTotalCobrarMat.Attributes.Add("OnKeyUp", "OnCurrencyValueKeyUp(this);")
    End Sub

    Public Function eliminarFormatoNumero(ByVal valor As String) As String
        valor = Replace(valor, "$", "")
        valor = Replace(valor, ",", "")
        valor = Replace(valor, "%", "")
        Return valor
    End Function

    Public Sub Mensaje(ByVal msg As String)
        Dim alertScript As String = "<script language=JavaScript runat=server>"
        alertScript &= "alert('" & msg & "');"
        alertScript &= "</script>"
        ClientScript.RegisterClientScriptBlock(Page.GetType(), "clientScrip", alertScript)
    End Sub
#End Region

   
End Class
